home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1995 August / macformat-027.iso / mac / Shareware City / Developers / Oberon⁄F / Mac / Mod / DialogUtils (.txt) < prev    next >
Encoding:
Oberon Document  |  1994-06-07  |  4.8 KB  |  144 lines  |  [oODC/obnF]

  1. Documents.StdDocumentDesc
  2. Documents.DocumentDesc
  3. Containers.ViewDesc
  4. Views.ViewDesc
  5. Stores.StoreDesc
  6. Documents.ModelDesc
  7. Containers.ModelDesc
  8. Models.ModelDesc
  9. Stores.ElemDesc
  10. Stores.StoreDesc
  11. TextViews.StdViewDesc
  12. TextViews.ViewDesc
  13. Containers.ViewDesc
  14. Views.ViewDesc
  15. Stores.StoreDesc
  16. TextModels.StdModelDesc
  17. TextModels.ModelDesc
  18. Containers.ModelDesc
  19. Models.ModelDesc
  20. Stores.ElemDesc
  21. Stores.StoreDesc
  22. TextModels.AttributesDesc
  23. Stores.StoreDesc
  24. Geneva
  25. TextModels.AttributesDesc
  26. Stores.StoreDesc
  27. Geneva
  28. MODULE MacDialogUtils;
  29.     IMPORT
  30.         SYSTEM, MacTypes, MemoryMgr := MacMemoryMgr, ResourceMgr := MacResourceMgr,
  31.         QuickDraw := MacQuickDraw, DialogMgr := MacDialogMgr, WindowMgr := MacWindowMgr,
  32.         ControlMgr := MacControlMgr;
  33.     CONST
  34.         UT = 1;
  35.         HANDLE = 2;
  36.         DITL = 4449544CH;
  37.         ctrlItem = 4;
  38.         btnCtrl = 0;
  39.         chkCtrl = 1;
  40.         radCtrl = 2;
  41.         resCtrl = 3;
  42.         statText = 8;
  43.         editText = 16;
  44.         iconItem = 32;
  45.         picItem = 64;
  46.     TYPE
  47.         DialogItem = RECORD (MacTypes.Data)
  48.             handle: MacTypes.Handle;
  49.             bounds: MacTypes.Rect;
  50.             type: SHORTINT;
  51.             len: CHAR;
  52.             (* data: ARRAY len OF SYSTEM.BYTE *)
  53.         END;
  54.         DialogItemPtr = POINTER TO DialogItem;
  55.         ItemList = RECORD (MacTypes.Data)
  56.             maxIndex: INTEGER;
  57.             items: ARRAY [UT] 1 OF DialogItem
  58.         END;
  59.         ItemListHandle = POINTER [HANDLE] TO ItemList;
  60.     PROCEDURE AppendDITL* (dialog: DialogMgr.DialogPtr; itemListID: INTEGER): INTEGER;
  61.         VAR
  62.             offset: MacTypes.Point;
  63.             maxRect: MacTypes.Rect;
  64.             appendItemList: ItemListHandle;
  65.             item: DialogItemPtr;
  66.             dlgItemList: ItemListHandle;
  67.             firstItem: INTEGER;
  68.             newItems, dataSize, i, err, int: INTEGER;
  69.             ch: ControlMgr.ControlHandle;
  70.             str: MacTypes.Str255;
  71.     BEGIN
  72.         ASSERT(dialog # NIL, 20);
  73.         maxRect := dialog.portRect;
  74.         offset.v := maxRect.bottom; offset.h := 0;
  75.         DEC(maxRect.bottom, 5); DEC(maxRect.right, 5);
  76.         dlgItemList := SYSTEM.VAL(ItemListHandle, dialog.items);
  77.         firstItem := dlgItemList.maxIndex + 2;
  78.         appendItemList := SYSTEM.VAL(ItemListHandle, ResourceMgr.GetResource(DITL, itemListID));
  79.         IF appendItemList = NIL THEN RETURN firstItem END;
  80.         MemoryMgr.HLock(appendItemList);
  81.         newItems := appendItemList.maxIndex + 1;
  82.         item := SYSTEM.VAL(DialogItemPtr, SYSTEM.ADR(appendItemList.items));
  83.         i := 0;
  84.         WHILE i # newItems DO
  85.             QuickDraw.OffsetRect(item.bounds, offset.h, offset.v);
  86.             QuickDraw.UnionRect(item.bounds, maxRect, maxRect);
  87.             dataSize := ORD(item.len);
  88.             CASE item.type MOD 128 OF
  89.             | ctrlItem + btnCtrl, ctrlItem + chkCtrl, ctrlItem + radCtrl:
  90.                 SYSTEM.MOVE(SYSTEM.ADR(item.len), SYSTEM.ADR(str), dataSize+1);
  91.                 item.handle := ControlMgr.NewControl(dialog, item.bounds, str, TRUE, 0, 0, 1, item.type MOD 4, 0)
  92.             | ctrlItem + resCtrl:
  93.                 SYSTEM.GET(SYSTEM.ADR(item.len) + 1, int);
  94.                 item.handle := ControlMgr.GetNewControl(int, dialog);
  95.                 ch := SYSTEM.VAL(ControlMgr.ControlHandle, item.handle);
  96.                 ch.contrlRect := item.bounds
  97.             | statText, editText:
  98.                 err := MemoryMgr.PtrToHand(SYSTEM.VAL(MacTypes.Ptr, SYSTEM.ADR(item.len) + 1), item.handle, dataSize)
  99.             | iconItem:
  100.                 SYSTEM.GET(SYSTEM.ADR(item.len) + 1, int);
  101.                 item.handle := QuickDraw.GetIcon(int);
  102.             | picItem:
  103.                 SYSTEM.GET(SYSTEM.ADR(item.len) + 1, int);
  104.                 item.handle := QuickDraw.GetPicture(int)
  105.             ELSE
  106.                 item.handle := NIL
  107.             END;
  108.             IF ODD(dataSize) THEN INC(dataSize) END;
  109.             item := SYSTEM.VAL(DialogItemPtr, SYSTEM.VAL(LONGINT, item) + dataSize + SIZE(DialogItem));
  110.             INC(i)
  111.         END;
  112.         err := MemoryMgr.PtrAndHand(SYSTEM.VAL(MacTypes.Ptr, SYSTEM.ADR(appendItemList.items)), dlgItemList, MemoryMgr.GetHandleSize(appendItemList) - 2);
  113.         INC(dlgItemList.maxIndex, newItems);
  114.         MemoryMgr.HUnlock(appendItemList);
  115.         ResourceMgr.ReleaseResource(appendItemList);
  116.         INC(maxRect.bottom, 5); INC(maxRect.right, 5);
  117.         WindowMgr.SizeWindow(dialog, maxRect.right, maxRect.bottom, TRUE);
  118.         RETURN firstItem
  119.     END AppendDITL;
  120. END MacDialogUtils.
  121. TextControllers.StdCtrlDesc
  122. TextControllers.ControllerDesc
  123. Containers.ControllerDesc
  124. Controllers.ControllerDesc
  125. Stores.StoreDesc
  126. TextRulers.StdRulerDesc
  127. TextRulers.RulerDesc
  128. Views.ViewDesc
  129. Stores.StoreDesc
  130. TextRulers.StdStyleDesc
  131. TextRulers.StyleDesc
  132. Models.ModelDesc
  133. Stores.ElemDesc
  134. Stores.StoreDesc
  135. TextRulers.AttributesDesc
  136. Stores.StoreDesc
  137. TextModels.AttributesDesc
  138. Stores.StoreDesc
  139. Geneva
  140. Documents.ControllerDesc
  141. Containers.ControllerDesc
  142. Controllers.ControllerDesc
  143. Stores.StoreDesc
  144.